package cmm;// Generated from C:/Users/13422/Documents/������ѧ��/������/cmm/src/main/java\CMM.g4 by ANTLR 4.7
import org.antlr.v4.runtime.tree.ParseTreeListener;

/**
 * This interface defines a complete listener for a parse tree produced by
 * {@link CMMParser}.
 */
public interface CMMListener extends ParseTreeListener {
	/**
	 * Enter a parse tree produced by {@link CMMParser#program}.
	 * @param ctx the parse tree
	 */
	void enterProgram(CMMParser.ProgramContext ctx);
	/**
	 * Exit a parse tree produced by {@link CMMParser#program}.
	 * @param ctx the parse tree
	 */
	void exitProgram(CMMParser.ProgramContext ctx);
	/**
	 * Enter a parse tree produced by {@link CMMParser#statement}.
	 * @param ctx the parse tree
	 */
	void enterStatement(CMMParser.StatementContext ctx);
	/**
	 * Exit a parse tree produced by {@link CMMParser#statement}.
	 * @param ctx the parse tree
	 */
	void exitStatement(CMMParser.StatementContext ctx);
	/**
	 * Enter a parse tree produced by {@link CMMParser#expr_stat}.
	 * @param ctx the parse tree
	 */
	void enterExpr_stat(CMMParser.Expr_statContext ctx);
	/**
	 * Exit a parse tree produced by {@link CMMParser#expr_stat}.
	 * @param ctx the parse tree
	 */
	void exitExpr_stat(CMMParser.Expr_statContext ctx);
	/**
	 * Enter a parse tree produced by {@link CMMParser#decl_stat}.
	 * @param ctx the parse tree
	 */
	void enterDecl_stat(CMMParser.Decl_statContext ctx);
	/**
	 * Exit a parse tree produced by {@link CMMParser#decl_stat}.
	 * @param ctx the parse tree
	 */
	void exitDecl_stat(CMMParser.Decl_statContext ctx);
	/**
	 * Enter a parse tree produced by {@link CMMParser#arr_decl_stat}.
	 * @param ctx the parse tree
	 */
	void enterArr_decl_stat(CMMParser.Arr_decl_statContext ctx);
	/**
	 * Exit a parse tree produced by {@link CMMParser#arr_decl_stat}.
	 * @param ctx the parse tree
	 */
	void exitArr_decl_stat(CMMParser.Arr_decl_statContext ctx);
	/**
	 * Enter a parse tree produced by {@link CMMParser#assign_stat}.
	 * @param ctx the parse tree
	 */
	void enterAssign_stat(CMMParser.Assign_statContext ctx);
	/**
	 * Exit a parse tree produced by {@link CMMParser#assign_stat}.
	 * @param ctx the parse tree
	 */
	void exitAssign_stat(CMMParser.Assign_statContext ctx);
	/**
	 * Enter a parse tree produced by {@link CMMParser#identifier}.
	 * @param ctx the parse tree
	 */
	void enterIdentifier(CMMParser.IdentifierContext ctx);
	/**
	 * Exit a parse tree produced by {@link CMMParser#identifier}.
	 * @param ctx the parse tree
	 */
	void exitIdentifier(CMMParser.IdentifierContext ctx);
	/**
	 * Enter a parse tree produced by {@link CMMParser#if_stat}.
	 * @param ctx the parse tree
	 */
	void enterIf_stat(CMMParser.If_statContext ctx);
	/**
	 * Exit a parse tree produced by {@link CMMParser#if_stat}.
	 * @param ctx the parse tree
	 */
	void exitIf_stat(CMMParser.If_statContext ctx);
	/**
	 * Enter a parse tree produced by {@link CMMParser#block}.
	 * @param ctx the parse tree
	 */
	void enterBlock(CMMParser.BlockContext ctx);
	/**
	 * Exit a parse tree produced by {@link CMMParser#block}.
	 * @param ctx the parse tree
	 */
	void exitBlock(CMMParser.BlockContext ctx);
	/**
	 * Enter a parse tree produced by {@link CMMParser#while_stat}.
	 * @param ctx the parse tree
	 */
	void enterWhile_stat(CMMParser.While_statContext ctx);
	/**
	 * Exit a parse tree produced by {@link CMMParser#while_stat}.
	 * @param ctx the parse tree
	 */
	void exitWhile_stat(CMMParser.While_statContext ctx);
	/**
	 * Enter a parse tree produced by {@link CMMParser#break_stat}.
	 * @param ctx the parse tree
	 */
	void enterBreak_stat(CMMParser.Break_statContext ctx);
	/**
	 * Exit a parse tree produced by {@link CMMParser#break_stat}.
	 * @param ctx the parse tree
	 */
	void exitBreak_stat(CMMParser.Break_statContext ctx);
	/**
	 * Enter a parse tree produced by {@link CMMParser#read_stat}.
	 * @param ctx the parse tree
	 */
	void enterRead_stat(CMMParser.Read_statContext ctx);
	/**
	 * Exit a parse tree produced by {@link CMMParser#read_stat}.
	 * @param ctx the parse tree
	 */
	void exitRead_stat(CMMParser.Read_statContext ctx);
	/**
	 * Enter a parse tree produced by {@link CMMParser#write_stat}.
	 * @param ctx the parse tree
	 */
	void enterWrite_stat(CMMParser.Write_statContext ctx);
	/**
	 * Exit a parse tree produced by {@link CMMParser#write_stat}.
	 * @param ctx the parse tree
	 */
	void exitWrite_stat(CMMParser.Write_statContext ctx);
	/**
	 * Enter a parse tree produced by {@link CMMParser#expr}.
	 * @param ctx the parse tree
	 */
	void enterExpr(CMMParser.ExprContext ctx);
	/**
	 * Exit a parse tree produced by {@link CMMParser#expr}.
	 * @param ctx the parse tree
	 */
	void exitExpr(CMMParser.ExprContext ctx);
	/**
	 * Enter a parse tree produced by {@link CMMParser#cal_expr}.
	 * @param ctx the parse tree
	 */
	void enterCal_expr(CMMParser.Cal_exprContext ctx);
	/**
	 * Exit a parse tree produced by {@link CMMParser#cal_expr}.
	 * @param ctx the parse tree
	 */
	void exitCal_expr(CMMParser.Cal_exprContext ctx);
	/**
	 * Enter a parse tree produced by {@link CMMParser#mul_expr}.
	 * @param ctx the parse tree
	 */
	void enterMul_expr(CMMParser.Mul_exprContext ctx);
	/**
	 * Exit a parse tree produced by {@link CMMParser#mul_expr}.
	 * @param ctx the parse tree
	 */
	void exitMul_expr(CMMParser.Mul_exprContext ctx);
	/**
	 * Enter a parse tree produced by {@link CMMParser#atom}.
	 * @param ctx the parse tree
	 */
	void enterAtom(CMMParser.AtomContext ctx);
	/**
	 * Exit a parse tree produced by {@link CMMParser#atom}.
	 * @param ctx the parse tree
	 */
	void exitAtom(CMMParser.AtomContext ctx);
}